何かと話題の二段階認証をAuth0で実装してみた(Email編)
AWS事業本部インテグレーション部のいわほりです。
前回の記事でSMSを使った二段階認証に触れましたが、今回はEmailを使った二段階認証について書きたいと思います。
今回も前回同様、記載する設定は、
- コーディング不要
- 無料のアカウントで実施可
ですので、お手元の環境で実際の動きを確認いただければと思います。
二段階認証と二要素認証
前回の記事のSMSを使った二段階認証は二要素認証でもあります(※)。しかし、今回触れるEmailだけを使った二段階認証は二要素認証ではありません。
一般的に二要素認証は以下の三要素のうちの二要素で認証することを意味しますが、Emailだけを用いた二段階認証の場合、いずれの要素も「WHAT YOU KNOW (knowledge factor)」に分類されるためです。
- WHAT YOU ARE (inherence factor)
- WHAT YOU HAVE (possession factor)
- WHAT YOU KNOW (knowledge factor)
この考え方については、こちらの記事の「認証の3要素」を参照ください。
(※)SMSを使った認証は「WHAT YOU KNOW (knowledge factor)」と「WHAT YOU HAVE (possession factor)」による二要素認証になります。
制約
Auth0では、Emailだけによる多要素認証を有効にすることはできません。Emailだけの場合、認証の一要素しか使用されないためです。
したがって、Emailを使った多要素認証を有効にするには、事前にEmail以外による多要素認証を有効にしておく必要があります。
事前準備
1.サンプルアプリケーションの作成
こちらの記事を参照いただき、
- アカウントの登録
- テナントの作成
- サンプルアプリケーションの作成・設定・起動
- 新規ユーザ登録
を行ってください。
2.SMSによる二段階認証/二要素認証の設定
前回の記事を参照いただき、SMSによる二段階認証/二要素認証の設定を行ってください。
- SMS以外による多要素認証でも後続作業を実施することは可能です。
設定してみた
1.Universal LoginでExperienceを「New」に設定
なお、「Classic」の状態でEmailによる多要素認証をは有効にすると、以下のメッセージが表示され、有効になりません。
Email is not available as an authentication factor when using the Classic Universal Login experience.
2.「Multifactor Auth」⇒「Email」でトグルをオンに設定
3.ユーザのEMAILのステータスの下の「Edit」を押下
4.「Set email as verified」を押下し、ステータスを「Verified」に変更
- EMAILのステータスが「pending」の場合、当該のアドレスにはメール送信できません。
- APIを使用して変更することも可能です
Emailサービスについて
本記事ではデフォルトで使用可能なAuth0のEmailサービスを使用しますが、本番環境での採用はサポートされません。
Auth0がサポートする以下のいずれかのEmailサービスを設定する必要があります。
- Amazon SES
- Mandrill
- SendGrid
- SparkPost
- Other SMTP (e.g., Gmail, Yahoo)
ログインしてみた
1.サンプルアプリケーションの起動後、メールアドレスとパスワードを入力し「Continue」を押下
2.(SMSで送られるコードを入力せずに)「Try another method」を押下
- この段階でSMSに送信されるコードを利用してログインすることも可能です。
3.「Email」を選択
- このタイミングで当該ユーザの検証済のアドレスに6桁のコードが送信されます。
4.Emailに送信される6桁のコードを入力し、「Continue」を押下
5.ログイン完了
ユーザのプロファイルから以下のことがわかります。
- 多要素認証されたこと
- 多要素認証に使用したメールアドレスは検証済であること
まとめ
SMS通知を受けるデバイスを保有しないユーザに対しても、二段階認証を有効にすることが可能であることをおわかりいただけたと思います。
- 今回の手順とおり設定する場合、初期登録時はSMS通知を受けるデバイスが必要です。
以上です。最後まで読んでいただき、ありがとうございました。
参照
本記事は、以下のサイトを参考に作成しております。